package book;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import javax.swing.*;
import java.sql.*;

public class InnerUser {

    static void inner(String id, String password) throws SQLException {
        //1. 创建DataSource 对象
        DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在的地址  向下转型
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://localhost:3306/libarysystem?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8");
        // 设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.让代码和数据库建立连接
        //选择java.sql 的Connextion
        Connection connection = dataSource.getConnection();

        //2.5 让用户输入要插入的信息


        //3.进行操作数据库.,以插入数据为例
        //  关键所在是构造一个SQL
        //  在JDBC中构造的SQL不必带;
        String sql = "insert into user values (?,?,?)";//内容待定
        //此处光是一个String 类型的sql还不行,要把这个String 包装成一个"语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        //替换 sql 中 ? 的内容
        statement.setString(1, id);
        statement.setString(2, password);
        statement.setString(3, "false");


        System.out.println(statement);

        //4.执行SQL
        // SQL 里如果是  insert,updatate,delete 都适用 executeUpdata 方法.
        // SQL 里如果是  select, 则使用 executeQuary 方法
        // 返回值表示这个操作,影响到了 几行,就相当于控制台里输入 sql 后,得到的数字
        int ret = statement.executeUpdate();
        if(ret == 1)
        {
            JOptionPane.showMessageDialog(null, "注册成功", "提示", JOptionPane.INFORMATION_MESSAGE);
            new Login();
        }

        //5. 此时 SQL 执行完毕, 然后还需要释放资源
        //先释放 statement  后释放  connection , 先创建的, 后释放
        statement.close();
        connection.close();
    }
}
